package org.ch03.test05;

import java.lang.reflect.Array;

/**
 * @author ZQX
 * @date 2025-03-26
 */
public class GenericTest<T> {
    // 注意：不能创建泛型数组 - 但可以声明泛型数组
    // private T[] arr = new T[3];

    private T[] arr;

    public T[] getArr() {
        return arr;
    }

    // 解决方案一：通过 setter 方法初始化
    public void setArr(T[] arr) {
        this.arr = arr;
    }

    public GenericTest() {
    }


    /**
     * 解决方案二：通过反射创建泛型数组
     *
     * @param typeClass
     * @param len
     */
    public GenericTest(Class<T> typeClass, int len) {
        Object object = Array
                .newInstance(typeClass, len);
        this.arr = (T[]) object;
    }
}
